
using System;
using System.Data;
using System.Linq;
using System.Linq.Dynamic;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;

using Abp.UI;
using Abp.AutoMapper;
using Abp.Authorization;
using Abp.Linq.Extensions;
using Abp.Domain.Repositories;
using Abp.Application.Services;
using Abp.Application.Services.Dto;


using JYJ.AiYard.StationManagement.TbYardIssuedCards.Dtos;
using JYJ.AiYard.StationManagement.TbYardIssuedCards;
using L._52ABP.Application.Dtos;
using Microsoft.AspNetCore.Http;
using JYJ.AiYard.StationManagement.TbYardMonthCardOnlines;

namespace JYJ.AiYard.StationManagement.TbYardIssuedCards
{
    /// <summary>
    /// TbYardIssuedCard应用层服务的接口方法
    ///</summary>
    public interface ITbYardIssuedCardAppService : IApplicationService
    {
        /// <summary>
		/// 获取TbYardIssuedCard的分页列表信息
		///</summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<TbYardIssuedCardListDto>> GetPaged(GetTbYardIssuedCardsInput input);
        /// <summary>
        /// 获取全部数据
        /// </summary>
        /// <param name="FilterText"></param>
        /// <returns></returns>
        Task<PagedResultDto<TbYardIssuedCardListDto>> GetIssuedCard(string FilterText);

        /// <summary>
        /// 通过指定id获取TbYardIssuedCardListDto信息
        /// </summary>
        Task<TbYardIssuedCardListBAccountDto> GetById(EntityDto<long> input);


        /// <summary>
        /// 返回实体的EditDto
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<GetTbYardIssuedCardBAccountForEditOutput> GetForEdit(NullableIdDto<long> input);


        /// <summary>
        /// 添加或者修改TbYardIssuedCard的公共方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Dictionary<string,string>> CreateOrUpdate(CreateOrUpdateTbYardIssuedCardInput input,int MonthCount, bool BAccount);


        /// <summary>
        /// 批量导入车牌
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Dictionary<string, string>> BatchLoadCardNo(IFormFile files);
        /// <summary>
        /// 批量导入车牌
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Dictionary<string, string>> BatchLoadCardNoByFileName(string filename, long StationId);

        /// <summary>
        /// 获取月卡延期规则
        /// </summary>
        /// <param name="Station_ID"></param>
        /// <returns></returns>
        Task<List<TbYardMonthCardOnline>> GetTbYardMonthCardOnlines(long StationId);

        /// <summary>
        /// 批量授权
        /// </summary>
        /// <param name="input"></param>
        /// <param name="selectedDevices"></param>
        /// <returns></returns>
        Dictionary<string, string> BatchAuthorizationByIds(List<long> input, string selectedDevices);

        /// <summary>
        /// 注销TbYardIssuedCard信息的方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task CardLogout(TbYardIssuedCardListDto input);

        /// <summary>
        /// 延期TbYardIssuedCard信息的方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Dictionary<string,string>> CardDelay(CreateOrUpdateTbYardIssuedCardInput input,int MonthCount);

        /// <summary>
        /// 批量延期
        /// </summary>
        /// <param name="input"></param>
        /// <param name="selectDate"></param>
        /// <returns></returns>
        Task<Dictionary<string, string>> BatchDelayByIds(List<long> input, string selectDate);

        /// <summary>
        /// 批量延期
        /// </summary>
        /// <param name="input"></param>
        /// <param name="selectDate"></param>
        /// <returns></returns>
        Task<Dictionary<string, string>> BatchCardLogoutByIds(List<long> input, string selectDate);

        /// <summary>
        /// 计算包月
        /// </summary>
        /// <param name="IssuedId"></param>
        /// <param name="Station_Id"></param>
        /// <param name="CardTypeId"></param>
        /// <param name="MonthCount"></param>
        /// <returns></returns>
        Task<TbYardIssuedMonthOnlineResult> CaleMonthCardOnlines(long IssuedId, long Station_Id, int CardTypeId, int MonthCount);
        /// <summary>
        /// 扫码支付
        /// </summary>
        /// <param name="Amount"></param>
        /// <param name="RecordId"></param>
        /// <param name="PlateNo"></param>
        /// <param name="Station_Id"></param>
        /// <param name="BarCode"></param>
        /// <returns></returns>
        Task<string> codePay(decimal Amount, decimal PurMoney, decimal YHMoney, int RecordId, string PlateNo, long Station_Id, 
            string EndTime, string OpType, string BarCode);
        //导出数据
        Task<FileDto> GetToExcel();
        /// <summary>
        /// 删除下载标志
        /// </summary>
        /// <param name="Station_Id"></param>
        /// <param name="IdList"></param>
        /// <returns></returns>
        Task<bool> DeleteDownTag(long Station_Id, string IdList);
         
    }
}
